假設公司內有多個開發者,我們要讓每個開發者可以進入到跳板機並操作到 EKS,有以下步驟
在 local 端建立金鑰
cd ~/.ssh
ssh-keygen -t rsa -b 4096 -C "alvin@xxcompany.com"
前往 bastion 並將剛剛生成的公鑰放上
sudo su
cd /home/ubuntu
vim .ssh/authorized_keys
在公司內網的環境上,使用指令進入跳板機
ssh -i "< Private Key Location >" ubuntu@54.150.214.27
但這個方法有幾個缺點
為了解決這個問題,我們後來將 bastion 改成 session manager,好處有兩個
AWS Session Manager 是 AWS Systems Manager 的其中一個服務。你可以使用它用安全的 tunnel 管理 EC2(不需要使用 SSH 或 RDP)。他有很高的安全性,因為連線的對象不需要設置任何 port 或使用金鑰。且他的連線動作都會自動記錄到 Amazon S3 或 CloudWatch Logs,很方便 Audit 或分析。
使用的方式就是要將 Bastion 成功開啟 AWS Session Manager 的功能,條件有以下
AmazonSSMManagedInstanceCore
的權限成功之後,就可以使用以下指令從 local 端直接連線 EKS$
$ aws ssm start-session --target < Bastion Instance ID > --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"portNumber":["443"],"localPortNumber":["4443"],"host":[" < EKS API server endpoint > "]}' --profile < Your Profile >
$ kubectl get pods -A